import axios from 'axios';

const API_URL = '/api/auth';

class AuthService {
  login(username, password) {
    return axios.post(`${API_URL}/login`, {
      username,
      password
    }).then(response => {
      console.log('登录响应:', response.data);
      if (response.data.data && response.data.data.token) {
        localStorage.setItem('user', JSON.stringify(response.data.data));
        console.log('存储到localStorage的用户信息:', response.data.data);
      }
      return response.data;
    });
  }

  logout() {
    localStorage.removeItem('user');
  }

  register(username, email, password, fullName) {
    return axios.post(`${API_URL}/register`, {
      username,
      email,
      password,
      fullName
    });
  }

  registerAdmin(username, email, password, fullName) {
    return axios.post(`${API_URL}/register-admin`, {
      username,
      email,
      password,
      fullName
    });
  }

  getCurrentUser() {
    return JSON.parse(localStorage.getItem('user'));
  }

  isAuthenticated() {
    const user = this.getCurrentUser();
    console.log('isAuthenticated检查 - 用户信息:', user);
    
    // 同时检查两种可能的数据结构
    if (!user) return false;
    
    // 检查用户是否被禁用
    if (user.user && user.user.enabled === false) {
      console.log('用户已被禁用:', user.user.username);
      return false;
    }
    
    if (user.enabled === false) {
      console.log('用户已被禁用:', user.username);
      return false;
    }
    
    return (!!user.token || (user.user && !!user.user.token));
  }

  isAdmin() {
    const user = this.getCurrentUser();
    console.log('isAdmin检查 - 用户信息:', user);
    
    // 如果用户不存在或已禁用，返回false
    if (!user) return false;
    
    // 检查不同的数据结构情况
    if (user.role === 'ROLE_ADMIN') {
      console.log('检测到管理员角色(user.role)');
      return true;
    }
    
    if (user.user && user.user.role === 'ROLE_ADMIN') {
      console.log('检测到管理员角色(user.user.role)');
      return true;
    }
    
    // 如果没有找到管理员角色，返回false
    console.log('未检测到管理员角色');
    return false;
  }

  getAuthHeader() {
    const user = this.getCurrentUser();
    console.log('获取认证头 - 用户信息:', user);
    
    if (user) {
      if (user.token) {
        console.log('使用user.token');
        return { Authorization: `Bearer ${user.token}` };
      }
    }
    console.log('未找到令牌');
    return {};
  }
}

export default new AuthService(); 